package com.lavegue.service.impl;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpSession;

import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;

import com.lavegue.common.BaseService;
import com.lavegue.common.Page;
import com.lavegue.dao.UserInfoDao;
import com.lavegue.model.UserInfo;
import com.lavegue.service.UserInfoService;
import com.lavegue.util.VerifyCodeImg;

/**
 * author: luoweibin
 * date:2011-12-20
 * description:
 *
 */
public class UserInfoServiceImpl extends BaseService<UserInfo, Integer, UserInfoDao>  implements UserInfoService {

	private UserInfoDao userInfoDao;
	

	public UserInfoDao getUserInfoDao() {
		return userInfoDao;
	}

	public void setUserInfoDao(UserInfoDao userInfoDao) {
		this.userInfoDao = userInfoDao;
	}

	public UserInfo findUserInfoByAccount(String account) {
		return userInfoDao.findByAccount(account);
	}

	public UserInfo findUserInfoById(int userid) {
		return userInfoDao.findById(userid);
	}

	public void updateUserInfo(UserInfo user) {
		userInfoDao.update(user);
	}
	/**
	 * ljp 20120203 查询所有用户信息
	 */
	public List<UserInfo> findAllUserInfo()
	{
		return userInfoDao.findAllUserInfo();
	}
	
	/**
	 * ljp 20111220 检测用户名号码注册重复
	 * 
	 * @return
	 */
	public String checkUserMobile(String mobileNo) {
		try {
			List<UserInfo> list = userInfoDao.searchUserByMobile(mobileNo);
			if (null != list && list.size() > 0) {
				UserInfo user = list.get(0);
				return user.getAccount();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return "";
	}
	
	/**
	 * ljp 20111220 DWR-获取生成的验证码，前台页面调用
	 */
	public String getSecurityCode() {
		// DWR中取得session等信息
		WebContext ctx = WebContextFactory.get();
		HttpSession session = ctx.getSession();
		// 获取session中的对象
		String verCode = String.valueOf(session
				.getAttribute(VerifyCodeImg.VALID_CODE_KEY));
		// System.out.println("verCode="+verCode);
		return verCode;
	}

	/**
	 * ljp 20111221 用户注册
	 */
	public boolean userRegisterInfo(UserInfo user) {
		boolean uinfo= userInfoDao.insertUserInfo(user);
		return uinfo;
	}
	
	/**
	 * ljp 20111222 修改用户密码
	 * 
	 * @param UserInfo对象
	 */
	public boolean modifyUserPassword(UserInfo user) {
		return userInfoDao.updateUserPassword(user);
	} 
	
	/**ljp 20111222 前台调用检查密码(密码修改功能)
	 * @userMobile  手机号码
	 * @userPwd 前台页面输入的旧密码
	 */ 
	public boolean checkUPwd(String userMobile, String userPwd) {
		try {
			String userDBpwd = "";
			List<UserInfo> list = userInfoDao.searchUserByMobile(userMobile);
			if (null != list && list.size() > 0) {
				UserInfo user = list.get(0);
				userDBpwd = user.getPassword();
				//比较前台输入的密码和数据库里存的密码是否一致
				if(!userDBpwd.equals(userPwd)){
					return false;
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		// ljp 20101110 密码加密
/*		String encryptedPassword = YejueUtil.getEncryptedPassword(userPwd
				.toLowerCase());
		System.out.println("DB_UserPwd=" + userpwd);
		System.out.println("UI_Old密码  =" + encryptedPassword);
		if (!userpwd.equals(encryptedPassword)) {
			return false;
		}*/
		return true;
		
	}
	
	/**
	 * ljp 20111222 修改用户信息
	 * @return
	 */
	public boolean modifyUserInfo(UserInfo chagUser){
		try {
			userInfoDao.modifyUserInfo(chagUser);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return true;
	}
	

	/**
	 * ljp 20120106 根据条件查询用户信息
	 * 
	 * @param pageNo 当前页数
	 * @param pageSize 每页多少条
	 * @param beginTime 选择开始时间
	 * @param endTime 选择结束时间
	 * @param userName 姓名 
	 * @param account 账号
	 * @param cpNameId 公司名称ID
	 * @param balBegin 开始余额
	 * @param balEnd 结束余额
	 * @param userType 用户属性
	 * @param userProvince 省份
	 * @param userCity 城市
	 * @param userZone 区县
	 * @return 用户对象
	 * @throws Exception
	 */
	public Page<UserInfo> findUserInfoList(int pageNo, int pageSize,
			Date beginTime, Date endTime, String userName, String account,
			Integer cpNameId, BigDecimal balBegin,BigDecimal balEnd, Integer userType,
			String userProvince, String userCity, String userZone)
			throws Exception {
		Page<UserInfo> pageUser = userInfoDao.findUserInfoList(pageNo, pageSize, beginTime, endTime,
				userName, account, cpNameId, balBegin, balEnd, userType,
				userProvince, userCity, userZone);
		
		if(null != pageUser){
			return pageUser;
		}
		
		return null;
	}
	
	/**
	 * ljp 20120109 查询所有用户信息
	 * 
	 * @param pageNo 当前页数
	 * @param pageSize 每页多少条
	 * @return 用户对象
	 * @throws Exception
	 */
	public Page<UserInfo> queryAllUserList(int pageNo, int pageSize){
		Page<UserInfo> pageUser = userInfoDao.queryAllUserList(pageNo, pageSize);
		if(null != pageUser){
			return pageUser;
		}
		return null;
	}
	
	
//测试.............
	/**
	 * ljp 20111220 检测用户名号码注册重复
	 * 
	 * @return
	 */
//	public UserInfo testUserByMobile() {
//		try {
//			List<UserInfo> list = userInfoDao.searchUserByMobile("13724253120");
//			if (null != list && list.size() > 0) {
//				UserInfo user = list.get(0);
//				return user;
//			}
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		return null;
//	}

	
	
}

